package collection02;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/*
集合的通用迭代（遍历）方式：
     Iterator iterator()
          从集合中获取一个迭代器对象，这个迭代器专门用来遍历集合中的元素

     Inerayor接口中的放啊：
     boolean hasNext()
          判断集合中是否有遍历的元素，如果有，hasNext()就返回true，如果集合中没有要遍历的元素，就返回false
     Object next()
          取出当前遍历的元素，并返回该元素


 */
public class CollectionDemo01 {
    public static void main(String[] args) {
        //method01();
        //method02();
        Collection c = new ArrayList();
        c.add("李雷");
        c.add("韩梅梅");
        c.add("李宁");

        for (Iterator iterator = c.iterator(); iterator.hasNext();) {//没有步进表达式
            System.out.println(iterator.next());
        }


    }

    private static void method02() {
        Collection c = new ArrayList();
        c.add("李雷");
        c.add("韩梅梅");
        c.add("李宁");
        Iterator iterator = c.iterator();

       /*
        while(判断当前遍历元素是否存在){
            取出集合中的元素
        }
        */

        while (iterator.hasNext()) {//如果hasNext()返回true，代表当前待遍历的元素，如果返回false，没有要遍历的元素
            System.out.println(iterator.next());

        }
    }

    private static void method01() {
        Collection c = new ArrayList();
        c.add("李雷");
        c.add("韩梅梅");
        c.add("李宁");

        //1.获取一个迭代器对象
        Iterator iterator = c.iterator();//这个方法底层肯定是返回Iterator接口的实现类对象(多态)

        //2.调用hasNext()方法和next()方法
        System.out.println(iterator.hasNext());//true
        //集合中有待遍历的元素，：“李雷”，因此hasNext()返回true
        System.out.println(iterator.next());//李雷
        //取出当前的遍历元素，“李雷”
        System.out.println("------------");

        System.out.println(iterator.hasNext());//true
        //集合中有待遍历的元素，：“李雷”，因此hasNext()返回true
        System.out.println(iterator.next());//韩梅梅
        //取出当前的遍历元素，“韩梅梅”
        System.out.println("--------------");

        System.out.println(iterator.hasNext());//true
        System.out.println(iterator.next());//李宁

        System.out.println("--------------");
        System.out.println(iterator.hasNext());//false
        //此时集合中已经没有待遍历元素，所以hasNext()返回false
        // System.out.println(iterator.next());// java.util.NoSuchElementException  当前无元素异常
    }
}
